This application is related to co-pending application entitled Quick Arbitration and Select Protocol for SCSI Interface, filed on instant date herewith and owned by the Assignee of the present invention, the disclosure of which is expressly incorporated herein by reference.
The present invention is directed to high speed SCSI data transmission protocols and, more particularly, to a system and method for broadcasting a number of SCSI commands sequentially to a number of capable target devices, without requiring an intervening arbitration.
The SCSI interface may be best described as a device independent input/output bus which allows a variety of peripheral devices to be connected to a personal computer system. SCSI refers to Small Computer Systems Interface and was initially developed to provide a disk drive interface that supported logical addressing of data rather than the more prevalent physical addressing. In addition, the SCSI interface was developed to transfer information in parallel, byte-wise fashion instead of serially, thus, ending certain compatibility difficulties associated with developing new disk drive technologies and bringing them to the market place. The electrical characteristics and signal protocols of the SCSI interface were developed in such a manner that the requirements of various peripheral devices could be accommodated with relative ease and flexibility. In particular, the SCSI interface protocol defines a number of commands which are available for accessing and querying a particular peripheral device regarding the parameter set required for the device to operate correctly. This particular feature of the SCSI interface makes it possible for a system designer to write a software device driver program for a generalized peripheral device, without regard to device specific parameter set details.
In accordance with the various versions of the SCSI interface, such as SCSI-1, SCSI-2, and SCSI-3, anywhere from 8 to 32 individual peripheral devices can be addressed on an SCSI bus depending on whether the bus is an 8-bit bus, a 16-bit bus or a 32-bit bus. These devices are generally categorized as initiators and targets, with any particular peripheral device able to play either role at any particular point in time. Specifically, a peripheral device functioning as an initiator is a device that initiates an information transaction or data transfer by giving another peripheral device a particular task to perform. An example of an initiator might well be the SCSI host adapter of a personal computer system, while an example of a typical target device might well be a rotating disk data storage system such as a hard disk drive or CD-ROM. A target peripheral device may thus be seen as the device which carries out the task identified by the initiator. As was mentioned previously, an SCSI interface bus configuration may have any combination of initiator and target devices, so long as the total does not exceed the number allowed by the bus width (8, 16, or 32).
However, regardless of the width of the SCSI bus, all data or information transfer transactions must take place in accord with the SCSI protocol, in which initiators must arbitrate for control of the SCSI bus before any message, command or data transaction is allowed to take place between an initiator and a target device. Conventionally, an arbitration winning initiator selects a particular target device to receive messages, commands and data in order to perform an information transfer transaction. If an initiator device requires several target devices to perform certain functions, that initiator must continue to re-arbitrate for control of the bus and sequentially address each of the target devices, in turn. For each target transaction, there is an arbitration, selection, a message phase, and a phase wherein the initiator transmits command and data information to the target, prior to the targets sending a message back to the initiator indicating receipt. This protocol activity takes place sequentially for each target device, with each transaction being completed, before the next is initiated.
Given the significant increases in SCSI information transmission speeds over the past few years, it will be understood that logically serial data communication transactions with several target devices involves a significant degree of overhead, particularly with regard to the several phase changes required in an conventional initiator/target transaction.
Accordingly, it will be seen that there is a need for some means to collapse the conventional SCSI transaction protocol so as to allow an initiator device to address a large number of target devices directly and to provide command information to each of the target devices in a single protocol sequence, without the need to affirmatively address each target device in turn and without the need to receive an affirmative acknowledgment from each target device.
The present invention provides for significant reductions in communication transaction overhead and the consequent increase in efficiency in average throughput in the context of typical operational data transfers, by bursting multiple broadcast command information packets in a single, novel protocol phase, termed the broadcast command packet phase.
In one aspect of the invention, target and initiator devices are coupled to an SCSI bus and are indicated as being broadcast command packet capable by entering suitable device configuration information into each device""s mode parameter pages by inclusion of a packet capability code bit. The SCSI bus system coupling the target and initiator devices is placed into broadcast command packet mode by a Mode Select operation indicating the peripheral device parameter page. A device identifies itself as broadcast command capable by transmitting BCP capability information as extensions to the transfer width exponent code used in WIDE DATA TRANSFER negotiations. The broadcast command packet protocol is initiated following an arbitration phase. The SCSI initiator with the highest priority ID asserts SEL in response to winning arbitration. The arbitration winner enters the broadcast command packet protocol by asserting NULL SELECT, defined by assertion of SEL with a no value applied to the data signal lines. Upon detection of NULL SELECT, all target devices which are broadcast command packet capable enter the broadcast command packet phase. A 24-byte packet is burst from the initiator in accordance with 24 consecutive ACK pulses, each pulse comprising a packet byte. Each target device decodes the device ID header of the packet and, if it is the identified target, the target receives the broadcast command packet information and sends a single REQ pulse back to the initiator.
In another aspect of the invention, multiple command packets are burst to one or more target devices during the broadcast command packet phase. Multiple command packets are sequentially burst to the data bus subsequent to a single arbitration. Each broadcast command packet capable target device connected to the bus evaluates the bus contents and, when it identifies a command packet with its address, receives the packet, queues the command and sends a single REQ pulse back to the initiator. The target device identified in the first packet may immediately place the bus in the data phase by deasserting C/D and MSG at the end of the broadcast command packet phase and begin transferring data. Following data transfer, the bus protocol cycle concludes normally with status and complete message phases before releasing the bus to a bus free condition.
In a further aspect of the invention, a broadcast command packet is a 24-byte template which includes a target ID, a command or message bit (CM) and a tagged or untagged (UT) bit. The command or message (CM) bit indicates whether the content of the packet payload is a command descriptor block or comprises additional messages. The broadcast command packet further comprises the ID of the broadcast command initiator, and IDENTIFY message, a queue TAG message and a queue tag value. The packet further comprises a 16-bit packet payload which is flexibly defined to comprise an up to 16 byte command descriptor block or 16-bytes of additional messages.
Thus, it may be seen that a significant reduction in the overhead associated with a data transfer operation and a consequent increase in throughput efficiency can be achieved, in accordance with practice of the present invention, by collapsing the IDENTIFY and SIMPLE TAG messages along with the command descriptor block into a 24-byte broadcast command packet. Command packets are broadcast to all target devices residing on a bus in a xe2x80x9cburstxe2x80x9d subsequent to an arbitration and a novel select phase. Multiple broadcast command packets are sequentially burst onto the data bus in xe2x80x9cback-to-backxe2x80x9d fashion to one or more targets subsequent to a single arbitration phase. The SCSI ID of the particular target device selected to perform a particular command is embedded in an ID field contained within each packet.